オンプレミス(閉域)環境のSSM Agent インストール失敗対処

AWS,SystemsManager,WindowsServer,ハイブリッド環境

概要

  • オンプレミスとAWS 環境を接続するハイブリッド構成を対象とします。AWS Systems Manager のハイブリッドアクティベーションを使用することで、AWS のEC2 インスタンスと非 EC2 の両方を管理できます。
  • マネージドノード(オンプレミスのサーバー)にSSM Agent をインストールする際に、オンプレミスが閉域の環境でありインターネットへ接続することができない場合、SSM Agent インストールが失敗することがあります。対処方法を記載します。

 

一般的な導入手順

  • 以下の記事を参照ください。オンプレミスのサーバーを AWS Systems Manager で管理するため、一般的な手順として、オンプレミスのLinuxマシンやWindowsマシンにSSM Agent をインストールする手順を詳しく記載しています。

  • ただし、上記手順は、オンプレミス環境がインターネットへ接続可の状況で検証した結果になります。もしオンプレミスがインターネットへ接続することができない場合、さらに注意事項が必要になります。次に注意事項を3つ記載します。

 

オンプレミス環境でSSM Agent インストール失敗を解決する

AWS 環境にVPC Endpoint を作成する

  • オンプレミスがインターネットへ接続することができない場合、AWSサービスのエンドポイント (ssm.ap-northeast-1.amazonaws.com) に接続ができません。インターネットへ接続せずAWSサービスを利用できるように、AWS 環境にVPC Endpoint を作成する必要があります。
  • SSM Agent やその他に利用するCloudWatch Agent などのサービス用の VPC Endpoint を作成します。SSM Agent を利用するには、以下3つのVPC Endpoint が必要です。
    • com.amazonaws.ap-northeast-1.ec2messages
    • com.amazonaws.ap-northeast-1.ssmmessages
    • com.amazonaws.ap-northeast-1.ssm

 

(引用: https://aws.amazon.com/jp/blogs/news/operation-of-a-hybrid-environment/)

 

Route 53 Resolver & オンプレミス環境にDNSフォワーダーを設定する

  • VPC Endpoint の作成だけでは、オンプレミス環境から名前解決ができません。オンプレミス環境からVPC Endpoint の名前解決用に、Route 53 Resolverのinbound endpoint を作成します。オンプレミス環境のサーバが参照する DNS サーバに対して、Route 53 Resolver inbound endpoint にフォワードするにようDNSフォワーダーを設定します。
  • 念のため、オンプレミス環境のサーバーから、VPC Endpoint の名前解決ができることを確認しましょう。

 

(引用: https://aws.amazon.com/jp/blogs/news/operation-of-a-hybrid-environment/)

 

SSM Agent のインストール手順を見直す

  • ここまでに紹介した以下2つのアクションを行ってもSSM Agent のインストールに失敗する場合、インストール手順を見直す必要があると考えます。
    • AWS 環境にVPC Endpoint を作成する
    • Route 53 Resolver & オンプレミス環境にDNSフォワーダーを設定する
  • Windows マシンの場合、インストーラーを “ssm-setup-cli.exe" から"AmazonSSMAgentSetup.exe" へ変更し、ログファイルを出力しています。エラーが改善されない場合は、コマンドの出力結果およびログファイルを調査します。
[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$code = "activation-code"
$id = "activation-id"
$region = "ap-northeast-1"
$dir = $env:TEMP + "\ssm"
New-Item -ItemType directory -Path $dir -Force
cd $dir
(New-Object System.Net.WebClient).DownloadFile("https://amazon-ssm-$region.s3.$region.amazonaws.com/latest/windows_amd64/AmazonSSMAgentSetup.exe", $dir + "\AmazonSSMAgentSetup.exe")
Start-Process .\AmazonSSMAgentSetup.exe -ArgumentList @("/q", "/log", "install.log", "CODE=$code", "ID=$id", "REGION=$region") -Wait
Get-Content ($env:ProgramData + "\Amazon\SSM\InstanceData\registration")
Get-Service -Name "AmazonSSMAgent"

 

 

参考資料

AWS Systems Managerユーザーガイド: ハイブリッド Linux ノードで SSM Agent をインストールする方法

https://iret.media/117167